package com.gitee.pulanos.pangu.showcases.config;

import cn.hutool.core.lang.Console;
import cn.hutool.cron.CronUtil;
import cn.hutool.cron.task.Task;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * 演示基于注解的方式获取配置数据
 * @author xc
 */
@Slf4j
@Component
public class AnnotationService {

    /**
     * demo.app.id为配置中心的参数KEY，开启 autoRefreshed 可以实现参数的动态刷新
     */
    @NacosValue(value = "${demo.app.id}", autoRefreshed = true)
    private String appId;

    @NacosValue(value = "${demo.app.name}", autoRefreshed = true)
    private String appName;

    @NacosValue(value = "${demo.app.author}", autoRefreshed = true)
    private String appAuthor;

    /**
     * 可以在配置中心修改配置数据然后查看控制台的输出效果
     */
    @PostConstruct
    public void demo() {
        // 演示作业：10秒执行一次
        CronUtil.schedule("*/10 * * * * *", new Task() {
            @Override
            public void execute() {
                Console.log("演示获取配置数据，配置中心动态刷新配置数据");
                log.info("参数appId：{}", appId);
                log.info("参数appName：{}", appName);
                log.info("参数appAuthor：{}", appAuthor);
            }
        });
        CronUtil.setMatchSecond(true);
        CronUtil.start();
    }

}
